package com.bot.nft.module.op.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bot.nft.module.dc.domain.vo.DcNftCertVo;
import com.bot.nft.module.op.domain.bo.DcCertQuery;
import com.bot.nft.module.op.domain.bo.OpSynActInfoBo;
import com.bot.nft.module.op.domain.bo.OpSynActRulesBo;
import com.bot.nft.module.op.domain.vo.AutNftInfoVo;
import com.bot.nft.module.op.domain.vo.DcNftCerVo;
import com.bot.nft.module.op.domain.vo.OpSynActInfoVo;
import com.bot.nft.module.op.domain.vo.OpSynCertListVo;

import java.util.List;

/**
 * 描述:<br>
 * 时间: 2024-01-24 16:11<br>
 * 负责人: 刘洪勋
 **/
public interface ISynService {

    /**
     * 新增合成活动
     * @param opSynActInfoBo 合成活动信息
     * @return 成功/失败
     */
    Boolean addSyn(OpSynActInfoBo opSynActInfoBo);

    /**
     * 修改合成活动
     * @param opSynActInfoBo 合成活动信息
     * @return 成功/失败
     */
    Boolean updateSyn(OpSynActInfoBo opSynActInfoBo);

    /**
     * 删除合成活动
     * @param id 合成活动标识
     * @return 成功/失败
     */
    Boolean delSyn(String id);

    /**
     * 启用合成活动
     * @param id 合成活动标识
     * @return 成功/失败
     */
    Boolean enableSyn(String id);

    /**
     * 禁用合成活动
     * @param id 合成活动标识
     * @return 成功/失败
     */
    Boolean disableSyn(String id);

    /**
     * 查看合成活动信息
     * @param id 合成活动标识
     * @return 合成活动信息
     */
    OpSynActInfoVo getSyn(String id);

    /**
     * 查询合成活动功能
     * @param keyword 关键字
     * @param status 状态
     * @param pageNo 页码
     * @param pageSize 条数
     * @return 分页信息
     */
    Page<OpSynActInfoVo> querySyn(String keyword, Integer status, Integer pageNo, Integer pageSize);

    /**
     * 修改库存功能
     * @param id 当前合成藏品规则标识
     * @param opSynActInfoBos 合成藏品信息
     * @return 成功/失败
     */
    Boolean updateInven(String id, List<OpSynActRulesBo> opSynActInfoBos);

    /**
     * 合成藏品功能
     *
     * @param nftIdList 原料信息标识(证书标识)
     * @param mbId   会员标识
     * @param synId  合成活动标识
     * @return 藏品证书
     */
    DcNftCertVo synThesis(List<String> nftIdList, String mbId, String synId);

    Integer sumInven(String nftId, String synId);

    /**
     * 查看会员是否有这个藏品
     * @param mbId 会员Id
     * @param nftId 藏品Id
     * @return 藏品名称
     */
    List<OpSynCertListVo> getSynRaw(String mbId, String nftId);


    /**
     * 查询藏品证书
     *
     * @param pageNo   当前页码
     * @param pageSize 每页多少条

     * @return 分页信息
     */
    Page<DcNftCerVo> queryNftCert(Integer pageNo, Integer pageSize, DcCertQuery dcCertQuery);

    /**
     * 查看我的藏品证书具体信息
     * @param id     藏品标识
     * @param MbId   会员标识
     * @return
     */
    List<AutNftInfoVo> getAutNft(String id, String MbId);
}
